A suite of non-cryptographic hash functions for Rust.
# Example
```rust
use std::hash::{Hash, Hasher};
use fasthash::{metro, MetroHasher};
fn hash(t: &T) -> u64 {
let mut s: MetroHasher = Default::default();
t.hash(&mut s);
s.finish()
}
let h = metro::hash64(b"hello world\xff");
assert_eq!(h, hash(&"hello world"));
```
By default, `HashMap` uses a hashing algorithm selected to
provide resistance against `HashDoS` attacks.
The hashing algorithm can be replaced on a per-`HashMap` basis
using the `HashMap::with_hasher` or
`HashMap::with_capacity_and_hasher` methods.
It also cowork with `HashMap` or `HashSet`, act as a hash function
```rust
use std::collections::HashSet;
use fasthash::spooky::Hash128;
let mut set = HashSet::with_hasher(Hash128);
set.insert(2);
```
Or use `RandomState` with a random seed.
```rust
use std::collections::HashMap;
use fasthash::{city, RandomState};
let s = RandomState::::new();
let mut map = HashMap::with_hasher(s);
assert_eq!(map.insert(37, "a"), None);
assert_eq!(map.is_empty(), false);
map.insert(37, "b");
assert_eq!(map.insert(37, "c"), Some("b"));
assert_eq!(map[&37], "c");
```